草庐IT

Android JSONObject 与 GSON

全部标签

java - 如何防止 gson 将整数转换为 double

我的json中有整数,我不希望gson将它们转换为double。以下不起作用:@TestpublicvoidkeepsIntsAsIs(){Stringjson="[{\"id\":1,\"quantity\":2,\"name\":\"apple\"},{\"id\":3,\"quantity\":4,\"name\":\"orange\"}]";GsonBuildergsonBuilder=newGsonBuilder();gsonBuilder.registerTypeAdapter(Double.class,newDoubleSerializerAsInt());Gsongso

java - 如何使用gson将Date序列化为long?

我最近将我们的一些序列化从Jackson切换到了Gson。发现Jackson将日期序列化为longs。但是,Gson默认将Dates序列化为字符串。如何在使用Gson时将日期序列化为长整数?谢谢。 最佳答案 第一种适配器执行反序列化,第二种适配器执行序列化。Gsongson=newGsonBuilder().registerTypeAdapter(Date.class,(JsonDeserializer)(json,typeOfT,context)->newDate(json.getAsJsonPrimitive().getAsLo

java - 为什么 Gson fromJson 抛出 JsonSyntaxException : Expected BEGIN_OBJECT but was BEGIN_ARRAY?

(这篇文章是canonicalquestion,下面提供了示例答案。)我正在尝试使用Gson#fromJson(String,Class)将一些JSON内容反序列化为自定义POJO类型.这段代码importcom.google.gson.Gson;publicclassSample{publicstaticvoidmain(String[]args){Stringjson="{\"nestedPojo\":[{\"name\":null,\"value\":42}]}";Gsongson=newGson();gson.fromJson(json,Pojo.class);}}classP

java - GSON 抛出解析空日期字段的异常

我正在使用GSON反序列化一些JSON。JSON是:{"employee_id":297,"surname":"Maynard","givenname":"Ron","lastlogin":"",...Employee对象有一个日期字段laSTLogin:publicclassEmployee{privateIntegeremployee_id;privateStringsurname;privateStringgivenname;privateDatelastlogin;我遇到的问题是,当laSTLogin值未填充时,它是JSON中的空字符串,因此GSON解析器抛出:java.tex

java - Gson、JSON 和 LinkedTreeMap 的精妙之处

我最近开始研究JSON字符串,有人告诉我Google自己的库Gson是处理这些字符串的新潮方式。我的理解是,JSON字符串本质上是一张map。其中每个变量指向字符串中的一个值。例如:StringjsonInput2="{\"created_at\":\"SatFeb0815:37:37+00002014\",\"id\":432176397474623489\"}到目前为止,一切都很好。可以使用以下代码将诸如此JSON字符串创建时间之类的信息分配给变量:Gsongson=newGson();Mapmap=newHashMap();map=(Map)gson.fromJson(jsonI

java - 如何使用 Google GSON 将 JSON 数组反序列化为通用类型的集合?

这个问题在这里已经有了答案:GsonTypeTokenwithdynamicArrayListitemtype(13个答案)关闭5年前。我正在编写一些代码,用于从网站检索资源。它看起来像这样:publicCollectiongetProjects(){Stringjson=getJsonData(methods.get(Project.class));//Getsajsonlist,ie[1,2,3,4]Gsongson=newGson();TypecollectionType=newTypeToken>(){}.getType();returngson.fromJson(json,c

java - Gson 强制使用 int 而不是 double

你好我可以配置gson他使用int而不是doublegot数据如:{fn:chat,data:{roomId:1,text:"Somebrabble"}}我有一个PacketClass将其反序列化为:publicclassDataPacket{privateStringfn;privateObjectp;//willbeaStringMap}并像这样解码:DataPacketpkg=gson.fromJson(message,DataPacket.class);为了更好的类型处理,我得到了DataPacket.p字段的数据pojo,例如:publicclassChatPacket{pu

com.google.gson.Gson.newJsonWriter 上的 Retrofit 2 的 java.lang.IllegalAccessError

如何找出导致此IllegalAccessError问题的原因?感谢您的帮助。我已经遵循了一些修复/解决方法并使用了Maven的Gson2.8。这是部分Maven配置:com.squareup.retrofit2converter-gson2.2.0com.google.code.gsongsoncom.google.code.gsongson2.8.0和完整的堆栈跟踪:java.lang.IllegalAccessError:triedtoaccessmethodcom.google.gson.Gson.newJsonWriter(Ljava/io/Writer;)Lcom/googl

java - 当要解析的元素是 json 字符串的元素时,使用 gson 解析 json 的最简单方法是什么?

我正在使用gson将json解析为javabean。对于我使用的API,大量的json结果包括result作为json对象的第一个属性。“gson方式”似乎是创建一个等效的包装器java对象,它具有一个用于目标输出类型的属性——但这会导致不必要的一次性类。是否有执行此操作的最佳实践方法?例如解析:{"profile":{"username":"nickstreet","first_name":"Nick","last_name":"Street"}}我必须做的:publicclassParseProfileextendsTestCase{publicvoidtestParseProfi

java - 使用 Gson 解析 JSON 映射/字典?

我需要解析如下所示的JSON响应:{"key1":"value1","key2":"value2","key3":{"childKey1":"childValue1","childKey2":"childValue2","childKey3":"childValue3"}}classEgg{@SerializedName("key1")privateStringmKey1;@SerializedName("key2")privateStringmKey2;@SerializedName("key3")//???}我正在通读Gson文档,但无法弄清楚如何正确地将字典反序列化为Map。